package demo;

/**
 * 享元模式
 * 运用共享技术有效地支持大量细粒度的对象
 * 优点：1、运用“池”技术，极大减少内存中对象的数量节约资源
 *      2、内外部状态分离
 * 缺点：1、业务逻辑负载
 *      2、外部状态需要由客户端传入影响运行时间
 * @author ZhouWeiBo
 * @create 2022/6/7
 */
public class App {

    public static void main(String[] args) {
        /**
         * 自行车工厂（类似于线程池）
         */
        BikeFactory bikeFactory = BikeFactory.getInstance();

        Bike bike1 = bikeFactory.getBike();
        bike1.ride("刘谦");

        Bike bike2 = bikeFactory.getBike();
        bike2.ride("小明");
        bike2.back();

        Bike bike3 = bikeFactory.getBike();
        bike3.ride("红红");

        System.out.println(bike1 == bike2);// 返回false,因为刘谦的1号自行车没有归还，所有没有将1号自行车再借出去
        System.out.println(bike2 == bike3);// 返回true,因为小明的0号自行车已归还，所有将0号自行车再借出去
    }
}
